package daoImpl;

import java.util.List;

import classes.Funcionario;
import dao.IFuncionarioDAO;

public class FuncionarioDAOImpl extends GenericDAOImpl<Funcionario> implements IFuncionarioDAO{

	@Override
	public void inserir(Funcionario entidade) {
			this.getManager().getTransaction().begin();			
				getManager().persist(entidade.getEndereco());
				getManager().persist(entidade.getContato());
				getManager().persist(entidade.getEmpresa());
				getManager().persist(entidade);
			this.getManager().getTransaction().commit();
	}

	@Override
	public void atualizar(Funcionario entidade) {
		this.getManager().getTransaction().begin();			
			this.getManager().merge(entidade.getContato());
			this.getManager().merge(entidade.getEmpresa());
			this.getManager().merge(entidade.getEndereco());
			this.getManager().merge(entidade);
		this.getManager().getTransaction().commit();
	}

	@Override
	public void remover(Integer id) {
		Funcionario funcionarioLocalizado= this.getManager().find(Funcionario.class,id);
		this.getManager().getTransaction().begin();
		this.getManager().remove(funcionarioLocalizado);
		this.getManager().getTransaction().commit();
	}


	@Override
	public List<Funcionario> consultarTodos() {
		List<Funcionario> lista = getManager().createQuery("select f from Funcionario f").getResultList();
		return lista;
	}

	@Override
	public Funcionario consultarPorId(Integer id) {
		Funcionario funcionario_localizado= this.getManager().find(Funcionario.class,id) ;		
		return funcionario_localizado;
	}

}
